Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Шифр Цезаря

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра електронних обчислювальних машин

Інформація про роботу

Рік:
2005
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Захист інформації в комп’ютерних системах
Група:
КІ-44

Частина тексту файла

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 2 з курсу „ Захист інформації в комп’ютерних системах ” Тема: Шифр Цезаря. Пошук ключа для зашифрованого файлу. Львів – 2005 Мета роботи: Створити програму, яка б шукала ключ до зашифрованого файлу, та розшифровувала його, відомо, що файл зашифровано алгоритмом Цезаря, не використовуючи прямий перебір. Виконання роботи: Для пошуку ключа алгоритмом шифрування Цезаря було використано найпростішу реалізацію методу частотного аналізу. Метод частотного аналізу полягає в аналізі частоти входження символів у відкритому тексті. Отже я шукав символ, що зустрічається у зашифрованому тексті найчастіше, і при виборі ключа вважав, що це пробіл. Варіант 12. Текст програми: #include "stdafx.h" #include "stdlib.h" #include "ctype.h" #include "io.h" #define THE_CHAR ' ' FILE * in, * out; void error(int); int findkey(); // функція пошуку ключа для даного зашифрованого файлу void decrypt(int);// функція дешифрування файлу (відновлення оригінального тексту) int main(int argc, char* argv[]) { unsigned char key=3; if (argc!=3) error(1); if ( ((in = fopen(argv[1],"r"))!= NULL) && ((out = fopen(argv[2],"w"))!= NULL) ){ printf("Program: %s;\n input file: %s;\n output file: %s.\n",argv[0],argv[1],argv[2]); } else error(2); key=findkey(); rewind(in); decrypt(key); fclose(in); fclose(out); printf("\nEncrypted file has been decypted. Key was %d.\n",key); return 0; } void error(int e) { if (e==1) printf("Wrong parameters!\nSYNTAX: 2_decrypt <input file> <output file> \n"); else printf("File I/O error!\n"); exit(1); } /*** Функція пошуку ключа ***/ int findkey() { unsigned char ch=0, pop_char=0; unsigned char key; // ключ алгоритму Цезаря static int char_count_table[256]; int i, max_count; printf("\n>>>\tKey fetchinп started"); while (!feof(in)) { // сканування файлу ch=fgetc(in); char_count_table[ch]++; // рахування повторів символів } max_count=0; for ( i=0 ; i<256 ; i++ ) { if ( max_count<=char_count_table[i] ) { max_count=char_count_table[i]; pop_char=i; } } puts("...SUCCESS!"); printf("max count has \"%c\" (hex%X,dec%d) - %d times\n",pop_char,pop_char,pop_char,max_count); printf("assuming it's \"%c\" (hex%X,dec%d)\n",THE_CHAR,THE_CHAR,THE_CHAR); key=pop_char-THE_CHAR; return key; } /*** Функція дешифрування вхідного файлу за допомогою вказаного ключа k ***/ void decrypt(int k) { int ch; printf("\n>>>\tDecrypting started"); ch=fgetc(in); while (!feof(in)) { ch=ch-k; fputc(ch,out); ch=fgetc(in); } puts("...DONE!"); } Результати роботи програми: Вхідний (зашифрований) файл (фрагмент): %%%%%iАПТКНЖ;rКНЖДЙВ;bНКРЛ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;nI;fАЙП%mАМРАОП;БКН;^КИИАЙПОU;MOKQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;]]i;^КНЛ%j}ОКЗАПАОU;LSMR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mI;\ПЖДЙОКЙ%^|ПАВКНФU;nП|Й|НО;oН|~Ж;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[cКИА;iАПТКНЖ%;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iКСАИ}АН;LTTS%%%;;;;;;;;;;;;;;;;dk;`Й~|ЛОРЗ|ПДЙВ;nА~РНДПФ;k|ФЗК|;C`nkD%%nП|ПРО;КБ;ПГДО;hАИК%%;;;oГДО;К~РИАЙП;ОЛА~ДБДАО;|Й;dЙПАНЙАП;ОП|Й|НО;ПН|~Ж;ЛНКПК~КЗ;БКН;ПГА%;;;dЙПАНЙАП;~КИИРЙДПФG;|Й;НАМРАОПО;ДО~РООДКЙ;|Й;ОРВВАОПДКЙО;БКН%;;;ДИЛНКСАИАЙПОI;;kЗА|ОА;НАБАН;ПК;ПГА;~РННАЙП;АДПДКЙ;КБ;ПГА;=dЙПАНЙАП%;;;jББД~Д|З;kНКПК~КЗ;nП|Й|НО=;Cno_;LD;БКН;ПГА;ОП|Й|НДХ|ПДКЙ;ОП|ПА%;;;|Й;ОП|ПРО;КБ;ПГДО;ЛНКПК~КЗI;;_ДОПНД}РПДКЙ;КБ;ПГДО;ИАИК;ДО;РЙЗДИДПАI%% Вхідний файл – відкритий текст (фрагмент): Network Working Group S. Kent Request for Comments: 2406 BBN Corp Obsoletes: 1827 R. Atkinson Category: Standards Track @Home Network N...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини